package edu.pe.cayetano.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;

import ws.synopsis.frmwrk.common.BResult;
import edu.pe.cayetano.framework.DAOException;
import edu.pe.cayetano.model.to.CicloTO;
import edu.pe.cayetano.seccd.constantes.ConstantesSECCD;

public class CicloDAO  extends BaseDAO{

	public CicloDAO(Connection cnx) {
		super(cnx);
	}
	
	/**
	 * Metodo que retorna el listado de ciclos
	 * */
	public ArrayList<CicloTO> getListaCiclos() throws Exception{

		CicloTO			cicloTO	 	= null;
		ArrayList<CicloTO> 			lista		 		= new ArrayList<CicloTO>();
		PreparedStatement   pstmt 		 		= null;
		ResultSet 			rs 			 		= null;
	
		try{
				StringBuffer query  = new StringBuffer();
				query.append(" SELECT C.CICLO_ID,C.NOMBRE"); 
				query.append(" FROM "+schema+"PERIODO_ACAD_CICLO B INNER JOIN "+schema+"CICLO C ON C.CICLO_ID=B.CICLO_ID");
				query.append(" INNER JOIN "+schema+"PERIODO_ACADEMICO D ON D.PERIODOACADEMICO_ID=B.PERIODOACADEMICO_ID");
				query.append(" WHERE D.ESTADO_ID=1");
				System.out.println("[SECCD][CicloDAO][getListaCiclos]:query:"+query.toString());
				pstmt = getConnection().prepareStatement(query.toString());
				rs=pstmt.executeQuery();
				while(rs.next()){
					cicloTO=new CicloTO();
					cicloTO.setCodigo(rs.getInt(1));
					cicloTO.setNombre(rs.getString(2));
					lista.add(cicloTO);
				}
			}catch(Exception e){
				throw new DAOException(e.getMessage());
			}finally{
				try{
					pstmt.close();
					rs.close();
				}catch(Exception e){
						
				}
			}
		return lista;
	}
	
	/**
	 * Metodo que retorna el listado de ciclos
	 * */
	public BResult getCiclos() throws Exception{

		CicloTO					cicloTO			 	= null;
		ArrayList<CicloTO> 		lista		 		= new ArrayList<CicloTO>();
		PreparedStatement   	pstmt 		 		= null;
		ResultSet 				rs 			 		= null;
		BResult					retCiclo			= new BResult();
		
		try{
				StringBuffer query  = new StringBuffer();
				query.append(" SELECT C.CICLO_ID,C.NOMBRE"); 
				query.append(" FROM "+schema+"PERIODO_ACAD_CICLO B INNER JOIN "+schema+"CICLO C ON C.CICLO_ID=B.CICLO_ID");
				query.append(" INNER JOIN "+schema+"PERIODO_ACADEMICO D ON D.PERIODOACADEMICO_ID=B.PERIODOACADEMICO_ID");
				query.append(" WHERE D.ESTADO_ID=1");
				System.out.println("[SECCD][CicloDAO][getCiclos]:query:"+query.toString());
				pstmt = getConnection().prepareStatement(query.toString());
				rs=pstmt.executeQuery();
				while(rs.next()){
					cicloTO=new CicloTO();
					cicloTO.setCodigo(rs.getInt(1));
					cicloTO.setNombre(rs.getString(2));
					lista.add(cicloTO);
				}
				retCiclo.setObject(lista);
				retCiclo.setCode(ConstantesSECCD.EXITO_RET);
			}catch(Exception e){
				System.out.println("[SECCD][CicloDAO][getCiclos]:error generado por:"+e.getMessage());
				retCiclo.setCode(ConstantesSECCD.ERROR_RET);
				throw new DAOException(e.getMessage());
			}finally{
				try{
					pstmt.close();
					rs.close();
				}
				catch(Exception e){
					retCiclo.setCode(ConstantesSECCD.ERROR_RET);
					System.out.println("[SECCD][CicloDAO][getCiclos]:error generado por:"+e.getMessage());
					throw new DAOException(e.getMessage());	
				}
			}
		return retCiclo;
	}

}
